Saltar al contenido principal

Pruebas locales

Requisitos Previos

  • Python: Verificar tener Python instalado en tu sistema.

  • Docker: Verificar tener Docker instalado en tu sistema.

  • Postman: Verificar tener Postman instalado en tu sistema.

  • Dependencias: Instalar dependencias necesarias ejecutando:

    python -m venv [nombre_entorno | venv]
    [nombre_entorno | venv]\Scripts\activate
    pip install -r requirements.txt
    pip list
  • Archivo .env: Crea un archivo .env en el directorio raiz del proyecto con las siguientes variables:

     ENV=development
    SILS_ENV=development
    LOG_LEVEL=debug

    DB_HOST=sils_mysql_host
    DB_PORT=sils_mysql_port
    DB_NAME=sils_mysql_dbname
    DB_USER=sils_mysql_dbuser
    DB_PASSWORD=sils_mysql_dbpassword

    BQ_PROJECT=dev
    BQ_DATASET=test_dataset
    PROJECT_ID=dev
    BQ_ENDPOINT="http://localhost:9050/"
    BQ_EXTERNAL_QUERY=external_query_connection

    INSTANCE_UNIX_SOCKET=instancia_cloudsql_sils_des_sql
    TIME_ZONE=America/Argentina/Cordoba
    SERVICE_ACCOUNT_EMAIL=tasks_service_account_email
    GOOGLE_APPLICATION_CREDENTIALS=secret.json

    REDIS_HOST=127.0.0.1
    REDIS_PORT=6379

Ejecución del Script con functions-framework

  1. Crear un archivo docker-compose.yml en el directorio raiz del proyecto con el contenido:

    services:
    db:
    image: mysql:latest
    container_name: mysql_container
    environment:
    MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
    MYSQL_DATABASE: ${DB_NAME}
    ports:
    - "${DB_PORT}:3306"
    volumes:
    - db_data:/var/lib/mysql
    networks:
    - app_network

    bigquery:
    image: ghcr.io/goccy/bigquery-emulator:latest
    container_name: bigquery_emulator
    command: ["--project=dev"]
    ports:
    - "9050:9050" # Puerto HTTP para consultas
    - "9060:9060" # Puerto gRPC (opcional)
    volumes:
    - bigquery_data:/data
    networks:
    - app_network

    redis:
    image: redis:latest
    container_name: redis_container
    ports:
    - "${REDIS_PORT}:6379"
    restart: always
    networks:
    - app_network

    volumes:
    db_data:
    bigquery_data:

    networks:
    app_network:
    driver: bridge
  2. Levantar el contenedor de Docker con bases de datos de prueba:

    docker-compose up --build -d
  3. En caso de querer eliminar el contenedor:

    docker-compose down -v
  4. Revisar Logs de BigQuery:

    docker-compose logs -f bigquery
  5. Ejecutar servidor de functions-framework para la función migration_task_processor:

    functions-framework --target=migration_task_processor --port=8081 --debug
  6. Probar la función migration_task_processor enviando por medio de peticion HTTP POST de Postman a la URL http://localhost:8081 con el body de la petición en formato HTTP:

    {
    "source_table": "incidentesHistoricos",
    "dest_table": "historico_incidentes",
    "filter_column": "fechaGPS",
    "start_marker": 39661120,
    "end_marker": 39711522,
    "table_structure": [
    { "Field": "id", "Type": "int(11)" },
    { "Field": "fecha", "Type": "datetime" },
    ...
    ]
    }
  7. Comprobar correcta inserción de datos en alguna de las tablas mediante Postman:

    POST http://localhost:9050/projects/test/queries
    Content-Type: application/json
    Body:
    {
    "query": "SELECT * FROM test.test_dataset.historico_incidentes LIMIT 1"
    }